package com.powernode.bank.dao.Impl;

import com.powernode.bank.dao.AccountDao;
import com.powernode.bank.pojo.Account;
import jakarta.annotation.Resource;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository("accountDao")
public class AccountDaoImpl implements AccountDao {
    @Resource(name = "jdbcTemplate")
    private JdbcTemplate jdbcTemplate;

    @Override
    public Account selectByActno(String actno) {
        String sql = "select actno,balance from t_act where actno = ?";
        /**
         * queryForObject方法三个参数:
         * 第一个参数:sql语句
         * 第二个参数:Bean属性值和数据库记录行的映射对象。在构造方法中指定映射的对象类型
         * 第三个参数:可变长参数，给sql语句的占位符问号传值。
         */
        Account account = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Account.class), actno);
        return account;
    }

    @Override
    public int update(Account act) {
        String sql = "update t_act set balance=? where actno=?";
        //注意：在JdbcTemplate当中，只要是insert，delete，update语句，都是调用update方法
        //update(String sql, Object... args)  sql语句 和 给?传值
        int count = jdbcTemplate.update(sql,act.getBalance(),act.getActno());
        return count;

    }
}
